Conversation
Add missing type hints in compile.py.
Change NamedTemporaryFile to TemporaryDirectory for easier cleanup via less verbose code.
Add a new implementation of `compile_multi_file()` that uses `mpy-tool` to find imports. This will work better than the previous implementation that used Python's `ModuleFinder`, which had several shortcomings. This is only implemented for MPY ABI v6 for now. To make it work for older ABIs, we would need to get an older copy of `mpy-tool`, and backport the json output feature to it.
Member
Author
|
This fixes bug 1 mentioned in pybricks/support#1602 (comment). And also serves as a trial for a possible solution for pybricks/support#1804. (That would require re-writing mpy-tool in TypeScript - maybe a job for AI?) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
We were using CPython
ModuleFinderto recursively find all modules that were imported by a Python script. This mostly worked, but had some issues, like not supporting implicit namespace packages.Let's replace it with
mpy-toolfrom MicroPython to basically do the same thing.ModuleFinderworks by compiling the file using CPython and then inspecting the bytecodes to find import statements. We can do the same without having to do the extra compiling and usingmpy-toolto inspect the MicroPython bytecodes instead.